小程序 云存储、云下载和云暂时链接

云函数中进行初始化操作
	const cloud = require('wx-server-sdk')
	const fs = require('fs')
	const path = require('path')		支持nodejs模块进行文件操作
	
	cloud.init({
	  env: cloud.DYNAMIC_CURRENT_ENV
	})
	exports.main = async (event, context) => {
	  const fileStream = fs.createReadStream(path.join(__dirname, 'demo.jpg'))
	  return await cloud.uploadFile({
	    cloudPath: 'demo.jpg',
	    fileContent: fileStream,
	  })
	}

小程序中进行云存储等操作:

	云存储
		如图片:
			回调函数中的this执向不同
			
			let that =this;
			wx.chooseImage({
				success:function(res){
					wx.cloud.uploadFile({				
			          cloudPath:xx+'.png',				上传到云服务器的id
			          filePath:res.tempFilePaths[0],	文件临时路径,如上一个chooseImage的成功回调函数返回结果中的文件暂时路径
			          success:function(res){
						res.fileID;获取上传文件的id,可直接使用
				})
			},
			fail:function(){xxx}
		})
		
		当无success、fail和complete其中一个时,会返回Promise
	
	云下载:
        wx.cloud.downloadFile({
            fileID:'云存储返回的fileID',
            success(res)
            {
                res.tempFilePath;	返回文件地址

            }
        })
        当无success、fail和complete其中一个时,会返回Promise
        
    云删除:
    	wx.cloud.deleteFile({
            fileList:['fileID'],
            success(res)
            {
                console.log(res.fileList);
            }
        })
        当无success、fail和complete其中一个时,会返回Promise
        
    云临时链接:
    	可以根据文件ID换取临时文件网络链接,公有读的文件获取的链接不会过期,私有的文件获取的链接十分钟有效期。一次最多取 50 个
    	wx.cloud.getTempFileURL({
		  fileList: [{
		    fileID: 'fileID',
		    maxAge: 60 * 60, 	链接有效时间
		  }],
		  success: res => {
		   
		    console.log(res.fileList)
		  },
		  fail: err => {
		   
		  }
		})
    	当无success、fail和complete其中一个时,会返回Promise
   
  组件支持直接传入云文件ID:
  	组件		属性
	image		src
	video		src、poster
	cover-image	src
	
  接口支持直接传入云文件ID: 
  	接口						参数
  	getBackgroundAudioManager	src
	createInnerAudioContext		src
	previewImage				urls、current

代码示例:

  uploadEvent(){
    let that=this;
    wx.chooseImage({
      success: function(res) {
        console.log(res);
        //将选中的图片上传到云服务器
        wx.cloud.uploadFile({
          //上传到云服务器的id
          cloudPath:new Date().getTime()+'.png',
          //上一个chooseImage的成功回调函数返回结果中的文件暂时路径
          filePath:res.tempFilePaths[0],
          success:function(res2){
            console.log(res2);
            let arr=that.data.imgSrc;
            arr.push(res2.fileID);
            that.setData({
              imgSrc: arr
            });
          }
        })
        
      },
      fail:function(res)
      {
        console.log('error');
      }
    })

  }
})

Taro代码示例:

import Taro from '@tarojs/taro'
import {View,Text,Button,Image} from '@tarojs/components'
import React,{Component} from 'react'

import {add } from '../../utils/db/index'

class Game extends Component{   

    state={
        imgs:[],
        cloudImgs:[],
        fileID:''
    }

    componentDidMount()
    {
        Taro.cloud.init({
            env: 'jeff-ssr'
        })
    }

    click=()=>{

        Taro.cloud.callFunction({
            name: 'add',
            //传入的数据
            data: {
               a: 1,
               b: 10,
            },
            //成功回调,参数为云函数中的返回内容
            success:function(res)
            {
              console.log(res);
            },
            fail()
            {
                console.log('err')
            }
          })
    }

    _add=async ()=>{
        let res = await add(
                {name:'复仇者联盟',img:'https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=3659875041,1653589983&fm=26&gp=0.jpg'},
                // {name:'蜘蛛侠',img:'https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=2665014954,1139410527&fm=26&gp=0.jpg'},
                // {name:'雷神',img:'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1747873458,3198507694&fm=26&gp=0.jpg'},
                // {name:'钢铁侠',img:'https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3179099924,1007440925&fm=26&gp=0.jpg'},
                // {name:'美国队长',img:'https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=3035539664,2279765935&fm=26&gp=0.jpg'},
              
            )


    }

    _chooseImage()
    {
        let that=this;
        Taro.chooseImage({
            count:2,
            sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
            sourceType: ['album', 'camera','user','environment'], // 可以指定来源是相册还是相机,默认二者都有,在H5浏览器端支持使用 `user` 和 `environment`分别指定为前后摄像头
            success: function (res) {
              // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
              var tempFilePaths = res.tempFilePaths;
              that.setState({
                  imgs:tempFilePaths
              })
            }
        })
    }

    _cloudSave=(e,imgPath)=>
    {
        let that=this;
        console.log(imgPath);
        Taro.cloud.uploadFile({
            cloudPath:new Date().getTime()+'.jpg',
            filePath:imgPath,
            success:(res)=>
            {
                console.log('ww')
                that.setState({
                    fileID:res.fileID
                })
                
            },
            fail()
            {
                console.log('ddd');
            }


        })
    }

    _cloudDown=()=>{
        let that=this;
        Taro.cloud.downloadFile({
            fileID:that.state.fileID,
            success(res)
            {
                let cloudImgs=that.state.cloudImgs;
                cloudImgs.push(res.tempFilePath);
                that.setState({
                    cloudImgs
                })
            }
        })
    }

    _cloudDelete=()=>{
        Taro.cloud.deleteFile({
            fileList:['fileID'],
            success(res)
            {
                console.log(res.fileList);
            }
        })
    }

    render()
    {
        const {imgs,cloudImgs}=this.state

        return(

            <View>
                <Text>game</Text>
                <Button onClick={this.click}>测试云函数</Button>
                <Button onClick={this._add}>添加云数据库</Button>
                <Button onClick={this._chooseImage.bind(this)}>调用本地相册</Button>
                <Button onClick={(e)=>{this._cloudSave(e,imgs[0])}}>调用云存储</Button>
                <Button onClick={this._cloudDown}>调用云下载</Button>
                <Button onClick={this._cloudDelete}>调用云删除</Button>

                {
                    cloudImgs.map((item,index)=>{
                        return(
                            <Image src={item}/>
                        )
                    })
                } 

            </View>
        )
    }
}

export default Game
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值